package org.seedltd.upms.service.detection;

import com.itextpdf.text.DocumentException;
import org.seedltd.core.base.BasePage;
import org.seedltd.core.base.IBaseService;
import org.seedltd.upms.model.detection.entity.DetectionQrcode;
import org.seedltd.upms.model.detection.form.DetectionQrcodeSearchForm;
import org.seedltd.upms.model.detection.vo.DetectionQrcodeVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 二维码数据业务接口
 * 
 * @author laizuan
 * @since 2021/07/26
 * @version 1.0
 */
public interface DetectionQrcodeService extends IBaseService<DetectionQrcode> {

    /**
     * 通过二维码编号找到二维码数据
     * @param codeNo 二维码编号
     * @param check 是否检测有效性和是否绑定，无效或者绑定抛出异常
     * @return 数据
     */
    DetectionQrcode findByCodeNo(String codeNo, boolean check);

    /**
     * 通过主键获取数据
     *
     * @param id
     *            主键
     * @return 数据
     */
    DetectionQrcodeVO findById(Long id);

    /**
     * 新增数据
     *
     * @param count
     *            需要生产的张数
     * @return 主键
     */
    void add(Integer count) throws Exception;

    /**
     * 失效二维码
     *
     * @param id
     *            主键
     * @return 是否修改成功。 true: 成功，false:失败
     */
    boolean disabled(Long id);

    /**
     * 批量打印二维码
     *
     * @param response
     *            响应流
     * @param Ids
     *            id 字符串主键
     * @param type
     *            二维码类型
     */
    void print(HttpServletResponse response, String Ids, String type) throws IOException, DocumentException;

    /**
     * 删除数据
     *
     * @param id
     *            主键
     * @return 是否删除成功。 true: 成功，false:失败
     */
    boolean delete(Long id);

    /**
     * 列表查询
     * 
     * @param searchForm
     *            搜索条件
     * @return 列表数据
     */
    BasePage<DetectionQrcodeVO> page(DetectionQrcodeSearchForm searchForm);
}